#include <iostream>
#include <map>

using namespace std;
//map/ multimap容器
// map基本概念
//1、map中所有元素都是pair
//2、pair中第一个元素为key（键值），起到索引作用，第二个元素为value（实值）
//3、所有元素都会根据元素的键值自动排序

//本质：map/multimap属于**关联式容器**，底层结构是用二叉树实现。
//优点：可以根据key值快速找到value值
//map和multimap区别：map不允许容器中有重复key值元素,multimap允许容器中有重复key值元素

//map构造和赋值:对map容器进行构造和赋值操作
//函数原型：
//构造：
//1、map<T1, T2> mp;                     //map默认构造函数:
//2、map(const map &mp);                 //拷贝构造函数
//赋值：
//map& operator=(const map &mp);        //重载等号操作符

void printM(map<int, int> &m) {
    for (map<int, int>::iterator it = m.begin(); it != m.end(); ++it) {
        cout << "key=" << it->first << ",value=" << it->second << endl;
    }
    cout << endl;
}

void test() {
    map<int, int> m;//默认构造
    m.insert(pair<int, int>(1, 10));
    m.insert(pair<int, int>(2, 20));
    m.insert(pair<int, int>(3, 30));
    printM(m);

    map<int, int> m2(m);//拷贝构造
    printM(m2);

    map<int, int> m3;
    m3 = m2;//赋值
    printM(m3);
}

int main() {
    test();
    return 0;
}